package com.fadada.api;


import com.fasc.open.api.bean.base.BaseRes;
import com.fasc.open.api.bean.common.OpenId;
import com.fasc.open.api.bean.req.signtemplate.GetSignTemplateListReq;
import com.fasc.open.api.bean.req.signtemplate.SignTemplateDetailReq;
import com.fasc.open.api.bean.req.signtemplate.SignTemplateListFilterInfo;
import com.fasc.open.api.bean.res.signtemplate.SignTemplateDetailRes;
import com.fasc.open.api.bean.res.signtemplate.SignTemplateListRes;
import com.fasc.open.api.client.SignTemplateClient;
import com.fasc.open.api.enums.common.IdTypeEnum;
import com.fasc.open.api.exception.ApiException;
import com.fasc.open.api.utils.ResultUtil;

/**
 * @author ljh
 * @version 0.0.1
 * @ClassName SignTemplateDemo.java
 * @Description 签署模板管理接口使用demo
 * @Param
 * @createTime 2021/9/24 15:42
 */
public class SignTemplateDemo extends BaseDemo {
    private static SignTemplateClient signTemplateClient;

    public static void main(String[] args) {
        try {
            BaseDemo baseDemo = new BaseDemo();
            openApiClient = baseDemo.getClient();
            signTemplateClient = new SignTemplateClient(openApiClient);
            //获取应用accessToken
            accessToken = baseDemo.getAccessToken(openApiClient);
            //查询签署模板列表
            signTempalteList();
            //获取签署模板详情
            signTempalteDetail();
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     * 查询签署模板列表
     *
     * 适用场景：用户若需要通过签署模板来创建签署任务，首先需要在企业管理后台创建签署模板，再通过该接口来获取签署模板列表。
     */
    public static void signTempalteList() throws ApiException {
        GetSignTemplateListReq signTemplateListReq = new GetSignTemplateListReq();
        signTemplateListReq.setAccessToken(accessToken);
        //模板归属方，指定获取该归属方的模板。**需检查授权** 如果未提供则表示查询该应用下的模板。
        signTemplateListReq.setOwnerId(OpenId.getInstance(IdTypeEnum.CORP.getCode(),null,openCorpId));
        //查询结果分页返回，此处指定第几页，如果不传默从第一页返回。页码从1开始，即首页为1
        signTemplateListReq.setListPageNo(1);
        //指定每页多少条数据，如果不传默认为100，单页最大100
        signTemplateListReq.setListPageSize(10);
        //查询条件
        SignTemplateListFilterInfo signTemplateListFilterInfo = new SignTemplateListFilterInfo();
        //签署模板名称，如果传了该参数，会根据名称模糊匹配查询，最大长度100个字符。
        signTemplateListFilterInfo.setSignTemplateName("签署模板名称");
        signTemplateListReq.setListFilter(signTemplateListFilterInfo);
        BaseRes<SignTemplateListRes> signTemplateListResBaseRes = signTemplateClient.getList(signTemplateListReq);
        ResultUtil.printLog(signTemplateListResBaseRes, openApiClient.getJsonStrategy());
    }


    /**
     * 获取签署模板详情
     *
     * 适用场景：用户若采用通过签署模板来创建签署任务时，需要指定参与方来填写控件或签章控件，可以通过该接口获取签署模板中预先定义的填写控件和签章控件。
     */
    public static void signTempalteDetail() throws ApiException{
        SignTemplateDetailReq signTemplateDetailReq = new SignTemplateDetailReq();
        signTemplateDetailReq.setAccessToken(accessToken);
        //模板归属方，指定获取该归属方的模板。**需检查授权** 如果未提供则表示查询该应用下的模板。
        signTemplateDetailReq.setOwnerId(OpenId.getInstance(IdTypeEnum.CORP.getCode(),null,openCorpId));
        //签署模板Id
        signTemplateDetailReq.setSignTemplateId("");
        BaseRes<SignTemplateDetailRes> signTemplateDetailResBaseRes = signTemplateClient.getDetail(signTemplateDetailReq);
        ResultUtil.printLog(signTemplateDetailResBaseRes, openApiClient.getJsonStrategy());
    }

}
